<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>

    var obj = { a: 1 }
    Object.defineProperty(obj, 'b', {
      value: 1, // 默认是undefined .用来设置属性值
      writable: true, // 默认是false,如果是true可可以修改属性值
      enumerable: true,  // 默认是false,如果是true，才可以被for in循环找到
      configurable: true // 默认是false
    })

    for (var key in obj) {
      console.log(key)
    }

    // obj.b = 100
    // console.log(obj)


    console.log(obj)
    // 当且仅当configuralbe 为true，
    // 属性的描述符才能被修改，同时这个属性才能从对应对象上删除
    // Cannot redefine property: bat Function.defineProperty 
    // Object.defineProperty(obj, 'b', {
    //   value: 20,
    //   configurable: true //
    // })
    // delete obj.b  // 只有当configurable是true,才能去删除属性

  </script>
</body>
</html>